#include <bits/stdc++.h>
using namespace std;
//https://www.nowcoder.com/practice/bd891093881d4ddf9e56e7cc8416562d?tpId=182&tqId=34785&ru=/exam/oj
// int main()
// {
//     string s1,s;
//     cin>>s1;
//     unordered_map<int,string> mm;
//     for(int right=0;right<s1.size();right++)
//     {
//         while(s1[right]>='0'&&s1[right]<='9')s+=s1[right++];
//         mm[s.size()]=s;
//         if(right!=s1.size()-1)s.clear();
//     }
//     int maxl=0;
//     for(auto x: mm)if(x.first>maxl)maxl=x.first;
//     cout<<mm[maxl];
//     return 0;
// }
// int main()
// {
//     string s1;
//     cin>>s1;
//     int begin=-1,len=0;
//     for(int i=0;i<s1.size();i++)
//     {
//         if(s1[i]>='0'&&s1[i]<='9')
//         {
//             int j=i;
//             while(j<s1.size()&&s1[j]>='0'&&s1[j]<='9')j++;
//             if(j-i>len)
//             {
//                 len=j-i;//长度
//                 begin=i;//字串起始下标
//             }
//             i=j;//从数字字串后的字符开始
//         }
//     }
//     cout<<s1.substr(begin,len);
//     return 0;
// }
//https://www.nowcoder.com/practice/0c9664d1554e466aa107d899418e814e?tpId=196&tqId=37167&ru=/exam/oj
// class Solution {
//     public:
//         /**
//          * 代码中的类名、方法名、参数名已经指定，请勿修改，直接返回方法规定的值即可
//          *
//          * 判断岛屿数量
//          * @param grid char字符型vector<vector<>> 
//          * @return int整型
//          */
//         int dx[4]={0,0,-1,1};
//         int dy[4]={-1,1,0,0};
//         int m=0,n=0;
//         bool visit[210][210]={0};
//         int solve(vector<vector<char> >& grid) 
//         {
//             // write code here
//             m=grid.size(),n=grid[0].size();
//             int count=0;
//             for(int i=0;i<m;i++)
//             {
//                 for(int j=0;j<n;j++)
//                 {
//                     if(grid[i][j]=='1'&&!visit[i][j])
//                     {
//                         count++;
//                         dfs(i,j,grid);
//                     }
//                 }
//             }
//             return count;
//         }
//         void dfs(int i,int j,vector<vector<char> >& grid)
//         {
//             visit[i][j]=true;
//             for(int k=0;k<4;k++)
//             {
//                 int x=i+dx[k],y=j+dy[k];
//                 if(x>=0&&x<m&&y>=0&&y<n&&grid[x][y]=='1'&&!visit[x][y])
//                 {
//                     dfs(x,y,grid);
//                 }
//             }
//         }
//     };

//https://ac.nowcoder.com/acm/problem/219046
//优化后的枚举
// #include <bits/stdc++.h>
// using namespace std;
// int t=0;
// int a[6];
// int main()
// {
//     cin>>t;
//     while(t--)
//     {
//         for(int i=0;i<6;i++)cin>>a[i];
//         sort(a,a+6);
//         if(a[0]+a[1]>a[2]&&a[3]+a[4]>a[5]||
//            a[0]+a[2]>a[3]&&a[1]+a[4]>a[5]||
//            a[0]+a[3]>a[4]&&a[1]+a[2]>a[5]||
//            a[2]+a[1]>a[3]&&a[0]+a[4]>a[5])
//         {
//             cout<<"Yes"<<endl;
//         }
//         else cout<<"No"<<endl;
//     }
//     return 0;
// }
//枚举
// bool func(vector<int> stick)
// {
//     return stick[0]+stick[1]>stick[2];
// }
// int main()
// {
//     int t;cin>>t;
//     while(t--)
//     {
//         vector<int> stick(6);
//         for(int i=0;i<6;i++)cin>>stick[i];
//         sort(stick.begin(),stick.end());
//         bool found=false;
        
//         for(int i=0;i<6&&!found;i++)
//         {
//             for(int j=i+1;j<6&&!found;j++)
//             {
//                 for(int k=j+1;k<6&&!found;k++)
//                 {
//                     vector<int> selected={stick[i],stick[j],stick[k]};
//                     if(!func(selected))continue;
//                     vector<int> r;
//                     for(int m=0;m<6;m++)
//                     {
//                         if(m!=i&&m!=j&&m!=k)r.push_back(stick[m]);
//                     }

//                     if(func(r))found=true;
//                 }
//             }
//         }
//         if(found)cout<<"Yes"<<endl;
//         else cout<<"No"<<endl;
//     }
//     return 0;
// }


//判断当前是否有三个选中了并且可以组成三角形
//是->选接下来三个，不是->直接返回false
//
//dfs
bool func(vector<int> stick)
{
    return stick[0]+stick[1]>stick[2];
}
bool dfs(vector<int>&stick,vector<bool>&use,vector<int>&selected,int u)
{
    if(selected.size()==3)
    {
        if(!func(selected))return false;
        vector<int> r;
        for(int i=0;i<stick.size();i++)
        {
            if(!use[i])r.push_back(stick[i]);
        }
        return func(r);
    }
    for(int i=u;i<stick.size();i++)
    {
        if(!use[i])
        {
            use[i]=true;
            selected.push_back(stick[i]);
            if(dfs(stick,use,selected,i+1))return true;
        }
        use[i]=false;
        selected.pop_back();
    }
    return false;
}
int main()
{
    int t;cin>>t;
    while(t--)
    {
        vector<int> stick(6);
        for(int i=0;i<6;i++)cin>>stick[i];
        sort(stick.begin(),stick.end());

        vector<bool> use(6,false);
        vector<int> selected;
        if(dfs(stick,use,selected,0))
            cout<<"Yes"<<endl;
        else
            cout<<"No"<<endl;
    }
    return 0;
}